package top.tigerwoods.spring.base.core.context;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * description  运行环境上下文信息
 *
 * @author TigerLin
 * @version 1.0
 * create 2024/06/20  22:30
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class WoodsContextInfo implements Serializable {
    private static final long serialVersionUID = 609099804302269193L;

    public final static String DEFAULT_SERVER_DOMAIN = "woodsDomain";

    /**
     * 当前服务域名（系统号）
     */
    String serviceDomain = DEFAULT_SERVER_DOMAIN;
    /**
     * 全局访问ID，用于区分不同用户
     * 单体应用为当前访问Id
     * 微服务应用为 gatewayId
     */
    String accessId;
    /**
     * 当前用户
     */
    WoodsCurrentUser currentUser;
    /**
     * 透传属性容器
     * 比如 feign 调用时，需要透传的属性
     */
    Map<String,Object> transferProperties = new ConcurrentHashMap<>();
    /**
     * 本地属性容器
     */
    Map<String,Object> localProperties = new ConcurrentHashMap<>();

    /**
     * 判断当前上下文是否为空
     * @return  true 为空 false 不为空
     */
    public boolean isNull() {
        return DEFAULT_SERVER_DOMAIN.equals(serviceDomain) && currentUser == null;
    }

}
